package com.ie.cloud.payment.dto;


import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Data
public class RefundOrderAdd {
    /** 商户应用ID **/
    @NotBlank(message="商户应用ID不能为空")
    private String appId;

    /**
     * 业务类型
     */
    @Schema(title = "bizType", description = "业务类型")
    private String bizType;

    /**
     * 业务编号
     */
    @Schema(title = "bizCode", description = "业务编号")
    private String bizCode;

    /** 商户订单号 **/
    private String mchOrderNo;

    /** 支付系统订单号 **/
    @NotEmpty(message="支付订单号不能为空")
    private String payOrderId;

    /** 商户自己的退款单号   **/
    private String mchRefundNo;

    /** 退款金额， 单位：分 **/
    @NotNull(message="退款金额不能为空")
    @Min(value = 1, message = "退款金额请大于1分")
    private Long refundAmount;


    /**
     * 支付金额,单位分
     */
    @Schema(title = "payAmount", description = "支付金额,单位分")
    private long payAmount;

    /** 货币代码 **/
    @NotBlank(message="货币代码不能为空")
    private String currency;

    /** 退款原因 **/
    @NotBlank(message="退款原因不能为空")
    private String refundReason;

    /** 客户端IP地址 **/
    private String clientIp;

    /** 异步通知地址 **/
    private String notifyUrl;

    /** 特定渠道发起额外参数 **/
    private String channelExtra;

    /** 商户扩展参数 **/
    private String extParam;

    /**
     * 支付方式代码
     */
    @Schema(title = "wayCode", description = "支付方式代码")
    @NotNull(message = "支付方式代码不能为空")
    private String wayCode;

    /**
     * 创建时间时间戳，毫秒
     */
    @Schema(title = "createdAtTimestamp", description = "创建时间时间戳，毫秒")
    private Long createdAtTimestamp;


}
